import extractParamsFromJsdoc from "./extractParamsFromJsdoc.js";

/**
 * 获取参数
 * @param {Object} jsDoc - 已经JSON化的jsDoc
 * @returns {*}
 */
export function getParams(jsDoc) {
    return extractParamsFromJsdoc(jsDoc);
}

/**
 * 获取描述信息
 * @param {Object} jsDoc - 已经JSON化的jsDoc
 * @returns {string}
 */
export function getDescription(jsDoc) {
    return jsDoc.description;
}

/**
 * 获取显示名称
 * @param {Object} jsDoc - 已经JSON化的jsDoc
 * @param {string} name - 组件名称
 * @returns {string}
 */
export function getDisplayName(jsDoc, name) {
    const displayNameTag = jsDoc.tags?.find(tag => tag.tag === 'displayName');
    return displayNameTag ? displayNameTag.description : name;
}

/**
 * 获取弃用信息
 * @param {Object} jsDoc - 已经JSON化的jsDoc
 * @returns {string|null}
 */
export function getDeprecatedInfo(jsDoc) {
    const deprecatedTag = jsDoc.tags?.find(tag => tag.tag === 'deprecated');
    return deprecatedTag ? deprecatedTag.description : null;
}

/**
 * 定义组件的key
 * @param {string} name - 组件名称
 * @param {string} absolutePath - 组件的绝对路径
 * @returns {string}
 */
export function getKey(name, absolutePath) {
    return encodeURIComponent(`${name}:${absolutePath}`);
}

/**
 * 将普通对象转换为包含组件信息的对象
 * @param {Object} obj - 包含组件信息的普通对象
 * @returns {Object}
 */
export function parse(obj) {
    return obj;
}